// 接口， 一种规范，一种契约，一个结构

// 约定一个对象中具体有什么样的成员，成员是什么类型

// 定义一个接口
interface Post {
  // 具体成员的限制
  title: string
  content: string
}

function printPost(post: Post) {
  console.log(post.title)
  console.log(post.content)
}

printPost({
  title: 'Hello Typescript',
  content: 'content'
})

// 可选成员
interface PostOption {
  title: string
  content: string
  subtitle?: string // 可选
}

// 只读成员
interface PostOption1 {
  title: string
  content: string
  subtitle?: string
  readonly summary: string // 只读成员
}

// 动态成员
interface CacheQ {
  // 不知道会有什么成员
  [prop: string]: string
}
const cache: CacheQ = {}

cache.foo = 'foo'